package cn.iocoder.yudao.module.handguard.dal.dataobject.user;

import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.framework.mybatis.core.type.LongListTypeHandler;
import cn.iocoder.yudao.module.system.enums.common.SexEnum;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 会员用户 DO
 *
 * uk_mobile 索引：基于 {@link #mobile} 字段
 *
 * @author 芋道源码
 */
@TableName(value = "system_users", autoResultMap = true)
@KeySequence("system_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserDO  extends BaseDO {

    // ========== 账号信息 ==========

    /**
     * 用户ID
     */
    @TableId
    private Long id;
    /**
     * 手机
     */
    private String mobile;

    private String username;

    private Long deptId;

    /**
     * 加密后的密码
     *
     * 因为目前使用 {@link BCryptPasswordEncoder} 加密器，所以无需自己处理 salt 盐
     */
    private String password;
    /**
     * 帐号状态
     *
     * 枚举 {@link CommonStatusEnum}
     */
    private Integer status;

    /**
     * 最后登录IP
     */
    private String loginIp;
    /**
     * 最后登录时间
     */
    private LocalDateTime loginDate;

    // ========== 基础信息 ==========

    /**
     * 用户昵称
     */
    private String nickname;
    /**
     * 用户头像
     */
    private String avatar;

    //用户类型标签：信贷、抵押转贷、抵押贷
    private String customLabel;

    /**
     * 真实名字
     */
    private String name;
    /**
     * 性别
     *
     * 枚举 {@link SexEnum}
     */
    private Integer sex;


    /**
     * 用户类型：1用户端，2：业务员端，3：权证端
     */
    private String userType;

    /**
     * 备注/业务员介绍
     */
    private String remark;

    /**
     * 户籍
     */
    private String censusRegister;

    /**
     * 户口
     */
    private String registeredHk;

    /**
     * 推荐人
     */
    private Long referrer;

    /**
     * 年龄
     */
    private Integer age;

    // ========== 其它信息 ==========

    //业务员id
    private Long agentId;

    //业务员姓名
    private String agentName;

    //权证员id
    private Long warrantId;

    //权证员姓名
    private String warrantName;

    //首页推荐 0：关闭，1：开启
    private String isHome;

    private String openId;

    //我的财富值
    private BigDecimal wealthValue;

    //身份证号
    private String identityCard;

    //推荐二维码
    private String qrCode;
}
